package com.nit.lab.service.system;

import com.nit.lab.dto.system.PermissionDTO;
import com.nit.lab.dto.system.RoleDTO;
import com.nit.lab.dto.system.TreeDTO;
import com.nit.lab.dto.utils.TableReqDTO;
import com.nit.lab.dto.utils.TableRspDTO;

import java.util.List;


public interface RoleService {

    /**
     * @Description: 获取表格数据
     * @Author: SN
     * @Date: 2019/01/31 11:02
     */
    TableRspDTO list4Table(TableReqDTO tableReqDTO) throws Exception;

    /**
     * @Description: 新增记录
     * @Author: SN
     * @Date: 2019/01/31 11:02
     */
    Integer add(RoleDTO roleDTO) throws Exception;

    /**
     * @Description: 更新记录
     * @Author: SN
     * @Date: 2019/01/31 11:02
     */
    Integer update(RoleDTO roleDTO) throws Exception;

    /**
     * @Description: 删除记录
     * @Author: SN
     * @Date: 2019/01/31 11:02
     */
    Integer remove(String roleIds) throws Exception;

    /**
     * @Description: 根据角色ID获取角色信息
     * @Author: SN
     * @Date: 2020/01/30 18:15
     */
    RoleDTO getRoleByRoleId(Long roleId) throws Exception;


    /**
     * @Description: 获取角色信息用于选择
     * @Author: SN
     * @Date: 2020/01/30 18:15
     */
    List<RoleDTO> listRole() throws Exception;

    /**
     * @Description: 根据角色ID，获取权限信息
     * @Author: SN
     * @Date: 2019/01/30 18:15
     */
    List<PermissionDTO> listPermissionByRoleId(Long roleId) throws Exception;

    /**
     * @Description: 根据角色ID，获取权限信息并处理为字符串拼接形式
     * @Author: SN
     * @Date: 2019/01/30 18:15
     */
    List<TreeDTO> listPermissionByRoleId4Tree(Long roleId) throws Exception;

    /**
     * @Description: 根据角色ID，获取对应权限信息树
     * @Author: SN
     * @Date: 2019/01/30 18:15
     */
    List<TreeDTO> listPermission4Tree() throws Exception;

    /**
     * @Description: 角色授权
     * @Author: SN
     * @Date: 2019/01/30 18:15
     */
    Integer authorize(Long roleId, String menuIds) throws Exception;
}
